package cn.pupil.springframework.beans.factory.config;

import cn.pupil.springframework.beans.BeansException;

/**
 * @Description: Bean后置处理器
 *  Spring 提供的扩展机制，在Bean实例化和初始化阶段的前后提供自定义处理逻辑的方法
 *  也可以替换 Bean 对象，与要实现的 AOP 有着密切的关系。
 *
 * @Author: pupil
 * @Date: 2024/11/6 上午 10:32
 */
public interface BeanPostProcessor {
    /**
     * 在 Bean 对象执行初始化方法之前，执行此方法
     *
     * @param bean
     * @param beanName
     * @return
     * @throws BeansException
     */
    Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;

    /**
     * 在 Bean 对象执行初始化方法之后，执行此方法
     *
     * @param bean
     * @param beanName
     * @return
     * @throws BeansException
     */
    Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;
}
